package com.nav.backend.service;

import com.nav.backend.pojo.CollectionPath;
import com.nav.backend.pojo.RingSearch;
import com.nav.backend.pojo.TwoPointsSearch;

import java.util.List;

/**
 * NavigateService 接口定义了导航相关的业务逻辑操作
 *
 * @author Seamher
 */
public interface NavigateService {

    /**
     * 添加导航历史记录
     *
     * @param searchOrigin      搜索起点
     * @param searchOriginX     搜索起点的 X 坐标
     * @param searchOriginY     搜索起点的 Y 坐标
     * @param searchDestination 搜索终点
     * @param searchDestinationX 搜索终点的 X 坐标
     * @param searchDestinationY 搜索终点的 Y 坐标
     * @param account           用户账号
     */
    void addHistory(String searchOrigin, Double searchOriginX, Double searchOriginY, String searchDestination, Double searchDestinationX, Double searchDestinationY, String account);

    /**
     * 添加环形导航历史记录
     *
     * @param searchLocation  搜索位置
     * @param searchLocationX 搜索位置的 X 坐标
     * @param searchLocationY 搜索位置的 Y 坐标
     * @param targetDistance  目标距离
     * @param account         用户账号
     */
    void addRingHistory(String searchLocation, Double searchLocationX, Double searchLocationY, Integer targetDistance, String account);

    TwoPointsSearch searchBySearchOrigin(String searchOrigin, String searchDestination);

    RingSearch searchBySearchLocation(String searchLocation);

    List<CollectionPath> mark(Double searchOriginX, Double searchOriginY, Double searchDestinationX, Double searchDestinationY, Double range);
}
